"""
@Author : 合肥一元数智教育科技有限公司
@Date :  2025/5/22 8:38
@Description : 
面向对象  编程思想
"""
"""
  1.保存多个学生的成绩
     1.1 变量   频繁开辟内存空间 效率比较低
     1.2 列表   一次存储多个数据
  2. 多个学生的信息   学号  名字 年龄 分数
     2.1 变量     频繁开辟内存空间   数据的关联关系不好维护
     2.2 列表     多个数据无法区分实际含义
     2.3 字典     {key:value}  [{},{},{}]

学生的信息:
   1. 字典    描述性信息  静态的属性
student = {
    'stu_name': 'tom',
    'stu_age': 18,
    'stu_score': 90
}
students = [student, student, student]

描述学生信息时可能会存在不仅要展示学生的静态信息，还要描述学生的一些行为    吃饭 睡觉 学习    函数  def
如果在编程的过程中既要描述静态属性也要描述操作行为则可以使用python中面向对象的思路进行代码的编写
面向对象的思想:
   在编写代码时先分析参与主体    大象放冰箱
   1. 大象    
       类的抽取     
           类:  具有相同属性和操作行为的一类事物的总称    电脑  水杯 学生  医生 教师
           class  类名:
                  属性   定义变量  
                  行为   函数 
           对象: 指代具体的事物    张三同学     
           类是对向的抽象  对象是类的具体      
   2. 冰箱
"""


# 如何按照面向对象的思想实现大象放冰箱
# 1. 抽取模板
# 类名首字母要大写
class Elephant:
    # 静态属性   变量
    name = 'tom'
    age = 3
    weight = 2

    # 行为  函数  类中定义的函数 和普通函数有区别  主要是类中的函数需要有一个默认参数self
    def walk(self):
        print('大象走进冰箱')


class Fridge:
    # 静态属性
    brand = '格力',
    price = 10
    color = 'black'

    # 开门行为
    def open(self):
        print('冰箱门已打开')

    # 关门行为
    def close(self):
        print('冰箱门已关闭')


# 2. 创建对象     instance =  类名()  开辟空间
fridge = Fridge()
elephant = Elephant()

#  执行具体的操作  函数调用 对象名.函数名()
fridge.open()  # 开门
elephant.walk()  # 大象走进冰箱
fridge.close()  # 关门
